iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 21
0
Security

資訊安全的美味雜炊系列 第 21

[Day21] - Crypto 0x1 介紹

  • 分享至 

  • xImage
  •  

Day21 - Crypto 0x1 介紹

前言

  • 今天開始連續五天會以Crypto為主題,從古典密碼學一直寫到現代的密碼學

甚麼是密碼學(Crypto)

  • 根據維基百科的解釋,密碼學幾乎是指加密的演算法,會將普通資訊(明文)轉為難以理解及分析(密文)的資料
  • 又可以以古典與現代密碼學做分類,之後的五天會細節及內容
  • 現代的密碼學幾乎都是基於現在的數學難題,讓想偷密文的駭客難以破密內容

加密/解密 & 編碼 & 雜湊

  • 今天就先觀念釐清一下
  • 這個是初學者最容易搞混的東西,很常會將這三樣東西搞混

加密/解密

  • 首先會產生一組密鑰,就是一把鑰匙(key)
    • 通常就是一組字串,而不同演算法生出key的方式也不一樣
  • 接著可以對一組原文透過key來加密,通常我們會叫他「明文」,加密完的結果就是密文
  • 若要解密時,就需透過那把key作解密,才能看到原本的明文
    • 也就是說,沒有key,你就無法得知原本的訊息

對稱式加密(Symmetric Encryption)

  • 加解密接使用同一把密鑰,雙方是用同一把密鑰
    • 當傳送方傳資料時,使用該把密鑰加密,接收方收到訊息後,用同把密鑰解密
  • 缺點
    • 一旦被中間人攔截密鑰,密文就有機會被駭客破解
  • 常見對稱式加密演算法
    • AES、ChaCha20、3DES、Salsa20、DES

非對稱式加密(Asymmetric Encryption)

  • 不同於對稱式加密,每個使用者都擁有一組金鑰,包含公鑰(public key)和私鑰(private key),公鑰能夠散布各地,但私鑰必須妥善保存
  • 詳細的原理我們留RSA後面再來提

編碼(encode)

  • 只是將資料透過人們討論的規則,對應到另外一項符號或者數字
  • 編碼的運用範圍也很廣
    • 有包含字串的、音訊的、視訊的...
  • 並不需要密鑰,你只需要知道編碼的規則,人人都可以解碼
  • 常見的字元編碼
    • base64, ASCII, Unicode, urlencode

ASCII

  • ASCII編碼只有0~127,因為要留一個位元給檢查碼
    • example
    • 0 = 48
    • A = 65
    • a = 97

base64

  • 一個單元8-bits
  • Base64一單元只有6bits
  • 如果原文不整除3,會出現相對應的=
  • 詳情原理可以參考:Base64

雜湊(hash)

  • 將長度不固定的資料,映射到固定長度的字串,一旦資料被座雜湊之後,是不可逆
  • 在帳戶系統當中,通常會將密碼hash後存入資料庫中,通常並不會用明文方式直接將密碼存在資料庫
    • 這樣好處是萬一駭客偷走了帳戶系統的資料庫,並不能直接拿到密碼,因為hash是不可逆的
    • 另外,帳戶系統對密碼還會加上salt(亂數),再拿去hash,會相對更安全一些
  • 常見的雜湊方式如
    • MD5, SHA1, SHA256...

風險

  • MD5, SHA1已被破解,在網路上甚至有網站能將hash過後的值找出原本明文
  • 現在建議使用
    • bcrypt, SHA256, SHA512...等方法

ref


上一篇
[Day20] - Rev 0x5 linux逆逆實戰
下一篇
[Day22] - Crypto 0x2 古典
系列文
資訊安全的美味雜炊30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言